package com.rockwell.sniffyhunter.utils;

import com.rockwell.sniffyhunter.model.Unloader;

public enum UnloaderState implements IStateMachine {
	START {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return LOCATE_MAZE;
		}
	},
	LOCATE_MAZE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((Unloader)stateObject).LocateMaze();
		}
	},
	ALIGN_ROBOT_WITH_MAZE
	{
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((Unloader)stateObject).AlignRobotWithMaze();
		}
	},
	LOCATE_ENTRANCE
	{
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((Unloader)stateObject).LocateEntrance();
		}
	},
	LOAD_MAZE_TEMPLATE
	{
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((Unloader)stateObject).LoadMazeTemplate();
		}
	},
	UNLOAD
	{
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((Unloader)stateObject).Unload();
		}
	},
	MAP_MAZE_LOCATION
	{
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return ((Unloader)stateObject).MapMazeLocation();
		}
	},
	DONE {
		@Override
		public
		IStateMachine doAction(IStateObject stateObject) {
			return START;
		}
	};
}
